package cn.niit.letuseatdemo.controller.user;

import cn.niit.letuseatdemo.entity.domain.Apeal;
import cn.niit.letuseatdemo.service.ApealService;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * Created with IntelliJ IDEA.
 *
 * @Author: JinNa ToDo
 * @Date: 2022/10/16/18:48
 * @Description:
 */
@Slf4j
@RequestMapping("/api/apeal")
@Controller
public class ApealController {

    @Autowired
    private ApealService apealService;

    /*
    * @Description: 页面初始化及查询${TODO}
    * @Author: Jin_Na
    * @CreateTime: 2022/11/16 12:43
     * @param: model
     * @param: apeal
     * @return: java.lang.String
    **/
    //@RequestMapping("{user}/{apeal}")
    //@GetMapping("/admin/apeal")
    @GetMapping
    public String apeal(Model model, Apeal apeal){
        model.addAttribute("apeal",apeal);
        List<Apeal> apealList = apealService.selectApealList(apeal);
        PageInfo<Apeal> pageInfo = new PageInfo<>(apealList);//分页查询
        log.info("分页对象 = {}", pageInfo);
        log.info("查询出来的申诉列表：{}", apealList);
        model.addAttribute("apeal", apeal);
        model.addAttribute("apealList", apealList);
        return "apeal/list";
    }

    /*
    * @Description: 接收用户请求，打开添加、修改页面${TODO}
    * @Author: Jin_Na
    * @CreateTime: 2022/11/16 12:43
     * @param: model
     * @param: apealId
     * @param: prefix
     * @return: java.lang.String
    **/
    @GetMapping("/{apealId}")
    public String saveIndex(Model model, @PathVariable("apealId") Integer apealId, String prefix){
        Apeal apeal = null;
        if(null != apealId && apealId > 0){
            apeal = apealService.selectApealByApealId(apealId);//添加数据
            System.out.println("要添加的申诉信息 = " + apeal);
        } else {
            apeal = new Apeal();
        }
        model.addAttribute("apeal", apeal);//向前台传递添加后的数据
        return prefix + "/add";
    }


    @PostMapping//向服务器传送数据
    public String addSave(Apeal apeal){
        int rows = apealService.insertApeal(apeal);
        if(rows <= 0){
            return "apeal/add";
        }
        //插入成功，重定向到申诉列表页面
        return "redirect:/apeal";
    }

    /*
    * @Description: 修改申诉，修改成功后更新数据库，页面重定向到apeal${TODO}
    * @Author: Jin_Na
    * @CreateTime: 2022/11/16 12:46
     * @param: apeal
     * @return: java.lang.String
    **/
    @PutMapping
    public String editSave(Apeal apeal){
        int rows = apealService.updateApeal(apeal);
        if(rows <= 0){ //修改失败，返回至修改页面
            return "Apeal/add";
        }
        return "redirect:Apeal";
    }

    /*
    * @Description:根据id删除申诉记录记录 ${TODO}
    * @Author: Jin_Na
    * @CreateTime: 2022/11/16 12:47
     * @param: id
     * @return: java.lang.String
    **/
    @DeleteMapping("/{id}")
    @ResponseBody
    public String remove(@PathVariable("id") Integer id){
        int rows = apealService.deleteApealByApealId(id);
        if(rows == 1){
            return "true";
        }else{
            return "false";
        }
    }

}
